#pragma once
#include "../Behaviors/MovingEffector.h"
#include <OgreSceneNode.h>

namespace VWD
{
	class OgreSceneNodeMovingEffector:
		public Behavior::MovingEffector
	{
	private:
		Ogre::SceneNode* target;
		double step;		
	public:
		OgreSceneNodeMovingEffector( Ogre::SceneNode* controlTarget,double stepLength=1);
		~OgreSceneNodeMovingEffector(void);

		double GetStep() const;
		void SetStep(double val);

		virtual void MoveForward() override;
		virtual void MoveBack() override;
		virtual void MoveUp() override;
		virtual void MoveDown() override;
		virtual void ShiftLeft() override;
		virtual void ShiftRight() override;
		virtual void Yaw(int rate) override;
		virtual void Pitch(int rate) override;
		virtual void Roll(int rate) override;
		virtual void RotateHorizon(int rate) override;
		virtual void RotateVertical(int rate) override;
	};
}
